package com.elitel.frame.base.service;

import java.util.List;

import com.elitel.frame.main.entity.BaseShowfield;
import com.elitel.frame.main.entity.CfgTableFieldCustomAlias;
import com.elitel.frame.main.entity.ext.BaseShowfieldExt;
import com.elitel.frame.main.entity.vo.BaseShowfieldVo;
import com.elitel.frame.main.entity.vo.ShowFieldVo;

/**
 * @description 服务显示字段接口
 * @author guoyanfei
 * @date 2017/11/14
 */
public interface BaseShowfieldService {
	
	/**
	 * @description 通过服务ID和服务类型查询该服务的所有配置字段
	 * @param serviceId(服务ID)
	 * @param serviceType(服务类型)
	 * @param masterDetailId(主从表服务从表信息ID)
	 * @return ShowFieldVo集合
	 * @author guoyanfei
	 * @date 2017/11/14
	 */
	List<ShowFieldVo> getShowfieldByServiceId(String serviceId,String serviceType,String masterDetailId);

	List<BaseShowfieldExt> getNotExistsShowFieldInService(String serviceId,String serviceType,String masterDetailId);

	
	/**
	 * @description 批量新增服务显示字段信息
	 * @param baseShowfields
	 * @return 新增条数
	 * @author guoyanfei
	 * @date 2017/11/15
	 */
	Integer addShowfield(List<BaseShowfield> baseShowfields);
	
	/**
	 * @description 通过服务Id和服务类型查询该服务已配置的显示字段信息
	 * @param serviceId(服务ID)
	 * @param serviceType(服务类型)
	 * @param masterDetailId(主从表服务从表信息ID)
	 * @return BaseShowfieldExt集合
	 * @author guoyanfei
	 * @date 2017/11/15
	 */
	List<BaseShowfieldExt> getShowfieldList(String serviceId,String serviceType,String masterDetailId);
	
	/**
	 * @description 批量删除服务配置好的显示字段信息
	 * @param guids(guid以','隔开)
	 * @return 删除条数
	 * @author guoyanfei
	 * @date 2017/11/15
	 */
	Integer deleteShowfieldByguids(String guids);
	
	/**
	 * @description 修改显示字段信息
	 * @param baseShowfield(显示字段实体)
	 * @return 修改条数
	 * @author guoyanfei
	 * @date 2017/11/15
	 */
	Integer updateShowfield(BaseShowfield baseShowfield);

	Integer updateShowfieldList(List<BaseShowfield> baseShowfieldList);

	
	/**
	 * @description 通过表标识查询所有配置的字段信息
	 * @param dtConfigId(表标识)
	 * @return ShowFieldVo集合
	 * @author guoyanfei
	 * @date 2017/11/20
	 */
	public List<ShowFieldVo> getAllShowFieldVo(String dtConfigId);

	// here is get Primary key alias for service Id
	public List<CfgTableFieldCustomAlias> getCfgTablePrimaryKeyCustomAliasByServiceId(Integer tableType, String serviceId);

	List<BaseShowfieldVo> selectByServiceCodes(List<String> serviceCodes);
}
